package fonctions;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.LinkedList;
import java.util.Scanner;

import structure.Matrice;

import ensemble.Echantillon;
import exceptions.OperationMatriceException;

public class Operation {
	
	public static Matrice sinus(Matrice m, double etiquette) {
		Matrice n= new Matrice(1, 1); 
		n.getMatrice()[0][0]= (1+ Math.sin((Math.PI/4))) - m.getMatrice()[0][0];
		return n;
	}
	
	public static Matrice logSigmoid (Matrice f) {
		for (int i=0; i<f.getLignes(); i++) {
			for (int j=0; j<f.getColonnes(); j++) {
				f.getMatrice()[i][j]= 1/(1+Math.exp(-(f.getMatrice()[i][j])));
			}
		}
		return f;
	}
	
	public static Matrice taux(Matrice m, double etiquette) {
		double r=0;
		for (int i=0; i<m.getLignes(); i++) {
			if (etiquette==i) {
				r+= Math.pow((m.getMatrice()[i][0]-0.9), 2);
			}
			else {
				r+= Math.pow((m.getMatrice()[i][0]-0.1), 2);
			}
		}
		Matrice q= new Matrice(1, 1);
		q.getMatrice()[0][0]= Math.sqrt(r);
		return q;
	}
	
	public static Matrice tauxVecteur1(Matrice m, double etiquette) {
		Matrice r = new Matrice (m.getLignes(), m.getColonnes());
		for (int i=0; i<m.getLignes(); i++) {
			if (etiquette==i) {
				r.getMatrice()[i][0]=m.getMatrice()[i][0]-0.9;
			}
			else {
				r.getMatrice()[i][0]=m.getMatrice()[i][0]-0.1;
			}
		}
		return r;
	}
	
	public static Matrice tauxVecteur2(Matrice m, double etiquette) {
		Matrice r = new Matrice (m.getLignes(), m.getColonnes());
		double err=taux (m,etiquette).getMatrice()[0][0];
		for (int i=0; i<r.getLignes(); i++) {
			r.getMatrice()[i][0]=err;
		}
		return r;
	}
	
	public static int max (Matrice a) {
		double max= a.getMatrice()[0][0];
		int indice_max= 0;
		for (int i=0; i<a.getLignes(); i++) {
			if (a.getMatrice()[i][0]>max) {
				max= a.getMatrice()[i][0];
				indice_max= i;
			}
		}
		return indice_max;
	}
}
